package com.cn.xiongmeng.czlxz.utils;

import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Handler;
import android.os.Looper;
import android.text.SpannableString;
import android.text.method.LinkMovementMethod;
import android.text.style.ClickableSpan;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;

/* 测试成功 */
public class PrivacyUtils {
    public interface PrivacyConfirmCallback {
        void onConfirm(boolean isAgreed);
    }
    public static void privacyConfirm(Context context, LinearLayout dialogPrivacy, TextView tvPolicyContent, Button btnDisagree, Button btnAgree, PrivacyConfirmCallback callback){
        // 弹出“用户协议”、“隐私政策”，让用户确认
        // 1、先查缓存，用户是否同意过
        SharedPreferences prefs = context.getSharedPreferences("AppPrefs", Context.MODE_PRIVATE);
        boolean privacyIsAgreed = prefs.getBoolean("privacyIsAgreed", false);
        if (privacyIsAgreed) {
            new Handler(Looper.getMainLooper()).post(() -> {
                dialogPrivacy.setVisibility(View.GONE);
            });
            if (callback != null) {
                callback.onConfirm(true);
            }
            return;
        }
        // 2、若未同意过，则弹出相应对话框
        new Handler(Looper.getMainLooper()).post(() -> {
            showPrivacy(context, dialogPrivacy, tvPolicyContent, btnDisagree, btnAgree, callback);
        });
    }
    private static void showPrivacy(Context context, LinearLayout dialogPrivacy, TextView tvPolicyContent, Button btnDisagree, Button btnAgree, PrivacyConfirmCallback callback){
        String text = "        在您开始使用我们的服务之前，请仔细阅读我们的用户协议和隐私政策。这些文件介绍了您如何使用我们的服务以及我们如何处理您的个人信息。请确保您已阅读并理解这些文件,并做出适当的选择。";
        SpannableString spannableString = new SpannableString(text);

        // 创建用户协议的点击事件
        ClickableSpan termsClickableSpan = new ClickableSpan() {
            @Override
            public void onClick(View widget) {
                // 跳转到用户协议网页
                openTermsUrl(context);
            }
        };
        // 创建隐私政策的点击事件
        ClickableSpan privacyClickableSpan = new ClickableSpan() {
            @Override
            public void onClick(View widget) {
                // 跳转到隐私政策网页
                openPrivacyUrl(context);
            }
        };
        btnDisagree.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (callback != null) {
                    callback.onConfirm(false);
                }
            }
        });
        // 监听用户点击同意
        btnAgree.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dialogPrivacy.setVisibility(View.GONE);
                SharedPreferences prefs = context.getSharedPreferences("AppPrefs", Context.MODE_PRIVATE);
                SharedPreferences.Editor editor = prefs.edit();
                editor.putBoolean("privacyIsAgreed", true);
                editor.apply(); // apply异步，commit同步
                if (callback != null) {
                    callback.onConfirm(true);
                }
            }
        });
        // 设置“用户协议”为超链接
        spannableString.setSpan(termsClickableSpan, text.indexOf("用户协议"), text.indexOf("用户协议") + "用户协议".length(), 0);
        // 设置“隐私政策”为超链接
        spannableString.setSpan(privacyClickableSpan, text.indexOf("隐私政策"), text.indexOf("隐私政策") + "隐私政策".length(), 0);


        tvPolicyContent.setText(spannableString);
        tvPolicyContent.setMovementMethod(LinkMovementMethod.getInstance());
    }
    private static void openTermsUrl(Context context) {
        // 使用 Intent 打开用户协议网页
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://little-moon.fun/terms"));
        context.startActivity(intent);
    }
    private static void openPrivacyUrl(Context context) {
        // 使用 Intent 打开隐私政策网页
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://little-moon.fun/privacy"));
        context.startActivity(intent);
    }
}
